package com.vr.xuecheng.content.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.vr.xuecheng.base.dto.BasePageParamsDTO;
import com.vr.xuecheng.base.response.PageResult;
import com.vr.xuecheng.base.response.Result;
import com.vr.xuecheng.content.model.dto.CourseAddOrUpdateParamsDTO;
import com.vr.xuecheng.content.model.dto.QueryCourseParamsDTO;
import com.vr.xuecheng.content.model.entity.CourseBase;
import com.vr.xuecheng.content.model.vo.AddOrUpdateCourseResponseVO;
import com.vr.xuecheng.content.model.vo.CourseBaseOfPreviewVO;
import com.vr.xuecheng.content.model.vo.CourseBasePageVO;
import com.vr.xuecheng.content.model.vo.CourseBaseVO;

/**
 * <p>
 * 课程基本信息 服务类
 * </p>
 *
 * @author hsh
 * @since 2025-02-20
 */
public interface ICourseBaseService extends IService<CourseBase> {

    /**
     * @param basePageParamsDTO 分页参数
     * @param queryCourseParamsDTO 分页条件参数
     * @return {@link PageResult }<{@link CourseBasePageVO }> 分页结果
     */
    PageResult<CourseBasePageVO> page(BasePageParamsDTO basePageParamsDTO, QueryCourseParamsDTO queryCourseParamsDTO);

    /**
     * @param id 课程id
     * @return {@link Result }<{@link CourseBaseVO }> 结果
     * 通过课程id查询课程信息
     */
    CourseBaseVO getCourseBaseById(Long id) ;

    /**
     * @param courseAddOrUpdateParamsDTO 新增课程参数
     * @return {@code AddCourseResponseVO } 结果
     */
    AddOrUpdateCourseResponseVO add(CourseAddOrUpdateParamsDTO courseAddOrUpdateParamsDTO);

    /**
     * @param courseAddOrUpdateParamsDTO 参数
     * @return {@code AddOrUpdateCourseResponseVO } 结果
     * 更新课程信息
     */
    AddOrUpdateCourseResponseVO updateCourseBase(CourseAddOrUpdateParamsDTO courseAddOrUpdateParamsDTO);

    /**
     * @param courseId 课程id
     * @return {@code CourseBaseOfPreviewVO } 显示在课程预览的课程基本信息
     * 通过id获取课程基本信息
     */
    CourseBaseOfPreviewVO getCourseBaseInfoById(Long courseId);
}
